﻿#region Código Gerado Pela Fábrica de Software (Using)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using itau.im.entidade;
#endregion

#region Código Gerado Pela Fábrica de Software (Namespace)
namespace itau.im.dado
{
    #region Código Gerado Pela Fábrica de Software (Interface)

    /// <summary>
    /// **************************************************************************************************<BR/>
    /// AUTOR           : Fábrica de Software                                                             <BR/>
    /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
    /// ALTERADO POR    :                                                                                 <BR/>
    /// DATA ALTERAÇÃO  :                                                                                 <BR/>
    /// OBJETIVO        : Interface "IProdutoFinanceiroDAO".                                              <BR/>
    /// **************************************************************************************************<BR/>
    /// </summary>
    public interface IProdutoFinanceiroDAO
    {
        #region Código Gerado Pela Fábrica de Software (Métodos)

        ProdutoFinanceiro ObterArvoreProdutoDerivado(int codigoProdutoDerivado);

        IList<FamiliaProdutoFinanceiro> ObterFamiliasProdutoFinanceiroPorCodigoClasseProduto(int codigoClasseProduto);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para efetuar a atualização                         <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="familiaProdutoFinanceiro">objeto FamiliaProdutoFinanceiro</param>
        void AtualizarFamiliaProdutoFinanceiro(FamiliaProdutoFinanceiro familiaProdutoFinanceiro);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método que será implementado para retornar a consulta.                          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns>Lista de objetos "ProdutoFinanceiro".</returns>
        IList<ProdutoFinanceiro> ObterProdutosFinanceiros();

        IList<ProdutoFinanceiroDerivado> ObterProdutosDerivados();

        /// <summary>
        ///********************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                               <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                        <BR/>
        /// ALTERADO POR   :                                                   <BR/>
        /// DATA ALTERAÇÃO :                                                   <BR/>
        /// OBJETIVO       : Cria Classe Produto Financeiro                    <BR/>
        ///********************************************************************<BR/>
        /// </summary>
        /// <param name="classeProduto">Classe Produto</param>
        void CriarClasseProdutoFinanceiro(ClasseProdutoFinanceiro classeProduto);

        /// <summary>
        ///********************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                               <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                        <BR/>
        /// ALTERADO POR   :                                                   <BR/>
        /// DATA ALTERAÇÃO :                                                   <BR/>
        /// OBJETIVO       : Exclui Classe Produto Financeiro                  <BR/>
        ///********************************************************************<BR/>
        /// </summary>
        /// <param name="codigoClasse">Código Classe</param>
        void ExcluirClasseProdutoFinanceiro(int codigoClasse);

        /// <summary>
        ///********************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                               <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                        <BR/>
        /// ALTERADO POR   :                                                   <BR/>
        /// DATA ALTERAÇÃO :                                                   <BR/>
        /// OBJETIVO       : Obtém Produto Financeiro por codigo               <BR/>
        ///                  Familia Produto                                   <BR/>
        ///********************************************************************<BR/>
        /// </summary>
        /// <param name="codigoFamilia">Código família</param>
        /// <returns>Lista de produtos financeiros</returns>
        List<ProdutoFinanceiro> ObterProdutoFinanceiroPorCodigoFamiliaProduto(int codigoFamilia);

        /// <summary>
        ///********************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                               <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                        <BR/>
        /// ALTERADO POR   :                                                   <BR/>
        /// DATA ALTERAÇÃO :                                                   <BR/>
        /// OBJETIVO       : Obtém Familia Produto Financeiro                  <BR/>
        ///********************************************************************<BR/>
        /// </summary>
        /// <param name="codigoFamilia">Código Família</param>
        /// <returns>Familia Produto Financeiro</returns>
        FamiliaProdutoFinanceiro ObterFamiliaProdutoFinanceiro(int codigoFamilia);

        /// <summary>
        ///********************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                               <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                        <BR/>
        /// ALTERADO POR   :                                                   <BR/>
        /// DATA ALTERAÇÃO :                                                   <BR/>
        /// OBJETIVO       : Obtém Classe Produto Financeiro                   <BR/>
        ///********************************************************************<BR/>
        /// </summary>
        /// <returns>Classe Produto Financeiro</returns>
        IList<ClasseProdutoFinanceiro> ObterClassesProdutoFinanceiro();

        /// <summary>
        ///********************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                               <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                        <BR/>
        /// ALTERADO POR   :                                                   <BR/>
        /// DATA ALTERAÇÃO :                                                   <BR/>
        /// OBJETIVO       : Criar Familia Produto Financeiro                  <BR/>
        ///********************************************************************<BR/>
        /// </summary>
        /// <param name="familia">Família</param>
        /// <returns>Familia Produto Financeiro</returns>
        void CriarFamiliaProdutoFinanceiro(FamiliaProdutoFinanceiro familia);

        /// <summary>
        ///********************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                               <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                        <BR/>
        /// ALTERADO POR   :                                                   <BR/>
        /// DATA ALTERAÇÃO :                                                   <BR/>
        /// OBJETIVO       : Excluir Familia Produto Financeiro                <BR/>
        ///********************************************************************<BR/>
        /// </summary>
        /// <param name="codigoFamilia">Código Família</param>
        /// <returns>Familia Produto Financeiro</returns>
        void ExcluirFamiliaProdutoFinanceiro(int idCodigoFamilia);

        /// <summary>
        ///********************************************************************<BR/>
        /// AUTOR          : Fábrica de Software                               <BR/>
        /// DATA DE CRIAÇÃO: 03/08/2010                                        <BR/>
        /// ALTERADO POR   :                                                   <BR/>
        /// DATA ALTERAÇÃO :                                                   <BR/>
        /// OBJETIVO       : Obtém Classe Produto Financeiro                   <BR/>
        ///********************************************************************<BR/>
        /// </summary>
        /// <param name="Codigo Familia">Código Classe</param>
        /// <returns>Classe Produto Financeiro</returns>
        ClasseProdutoFinanceiro ObterClasseProdutoFinanceiro(int codigoClasse);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método AtualizarClasseProdutoFinanceiro.                                                           <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="classeProduto">ClasseProdutoFinanceiro</param>
        void AtualizarClasseProdutoFinanceiro(ClasseProdutoFinanceiro classeProduto);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ObterProdutosDerivadosPorProduto.                                                           <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="codigoProduto">Codigo do Produto</param>
        /// <returns>Lista de objetos "ProdutoFinanceiroDerivado".</returns> 
        IList<ProdutoFinanceiroDerivado> ObterProdutosDerivadosPorProduto(int codigoProduto);

        int ObterProdutoFinanceiroPorProdutoFinanceiroDerivado(int codigoProdutoFinanceiroDerivado);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ObterFamiliasProdutoFinanceiro.                                                           <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns>Lista de objetos "FamiliaProdutoFinanceiro".</returns>
        IList<FamiliaProdutoFinanceiro> ObterFamiliasProdutoFinanceiro();

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 03/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método CriarProdutoFinanceiro.                                                           <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiro">Objeto ProdutoFinanceiro</param>
        /// <returns>Codigo do Produto criado</returns>
        int CriarProdutoFinanceiro(ProdutoFinanceiro produtoFinanceiro);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 06/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método CriarProdutoFinanceiroDerivado.                                          <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiroDerivado">Objeto ProdutoFinanceiroDerivado</param>
        int CriarProdutoFinanceiroDerivado(ProdutoFinanceiroDerivado produtoFinanceiroDerivado);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ExcluirProdutoFinanceiro.                                                <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiro">Objeto ProdutoFinanceiro</param>
        void ExcluirProdutosFinanceirosDerivados(IList<ProdutoFinanceiroDerivado> listaProdutosFinanceirosDerivados);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 07/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ExcluirProdutoFinanceiro.                                                <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiro">Objeto ProdutoFinanceiro</param>
        void ExcluirProdutoFinanceiroDerivado(ProdutoFinanceiroDerivado produtoFinanceiroDerivado);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Método ExcluirProdutoFinanceiro.                                                <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiro">Objeto ProdutoFinanceiro</param>
        void ExcluirProdutoFinanceiro(ProdutoFinanceiro produtoFinanceiro);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Atualizar Produto Financeiro                                                    <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiro">Objeto ProdutoFinanceiro</param>
        void AtualizarProdutoFinanceiro(ProdutoFinanceiro produtoFinanceiro);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Atualizar Produtos Financeiros Derivados                                        <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiro">Lista de ProdutoFinanceiroDerivado</param>
        void AtualizarProdutosFinanceirosDerivados(IList<ProdutoFinanceiroDerivado> listaProdutosDerivados);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 25/08/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Cria Produtos Financeiros Derivados                                             <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="produtoFinanceiro">Lista de ProdutoFinanceiroDerivado</param>
        void CriarProdutosFinanceirosDerivados(IList<ProdutoFinanceiroDerivado> listaProdutosDerivados);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 02/09/2010                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Produto Financeiro Alocacao Por Produto                                   <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <returns>Lista de ProdutoFinanceiroAlocacao</returns>
        IList<ProdutoFinanceiroAlocacao> ObterProdutoFinanceiroAlocacaoPorProduto(int codigoProdutoFinanceiro);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 10/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Atualizar Produto Financeiro                                                    <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="ProdutoFinanceiro">produtoFinanceiroDerivado</param>
        void AtualizarProdutoFinanceiroDerivado(ProdutoFinanceiroDerivado produtoFinanceiroDerivado);

        /// <summary>
        /// **************************************************************************************************<BR/>
        /// AUTOR           : Fábrica de Software                                                             <BR/>
        /// DATA DE CRIAÇÃO : 10/01/2011                                                                      <BR/>
        /// ALTERADO POR    :                                                                                 <BR/>
        /// DATA ALTERAÇÃO  :                                                                                 <BR/>
        /// OBJETIVO        : Obter Produto Financeiro Derivado Por Codigo GR                                 <BR/>
        /// **************************************************************************************************<BR/> 
        /// </summary>
        /// <param name="ProdutoFinanceiro">codigoProdutoFinanceiroGR</param>
        ProdutoFinanceiroDerivado ObterProdutoFinanceiroDerivadoPorCodigoGR(string codigoProdutoFinanceiroGR);

        void AtualizarProdutoFinanceiroDerivadoCompleto(ProdutoFinanceiroDerivado produtoFinaceiroDerivado);
        #endregion
    }
    #endregion
}
#endregion
